<?php

/**
 * Manage some base actions
 * @author Tuong Tran <tuong.tran@outlook.com>
 */
class SiteController extends Controller {

    public $layout = 'column2';

    /**
     * Declares class-based actions.
     */
    public function actions() {
	return array(
	    // captcha action renders the CAPTCHA image displayed on the contact page
	    'captcha' => array(
		'class' => 'CCaptchaAction',
		'backColor' => 0xFFFFFF,
	    ),
	    'newsletter' => array(
		'class' => 'application.widgets.newsletter.ANewsletter'
	    )
	);
    }

    /**
     * render home page
     */
    public function actionIndex() {

	$this->layout = 'home';

	$this->description = settings()->get('seo', 'home_description');
	$this->keywords = settings()->get('seo', 'home_keywords');

	//load the categories
	$categories = Category::model()->findAll();

	//featured adv
	$featureAds = Ad::model()->findAll(array(
	    'condition' => 'featured = 1 and expire_featured >' . time(),
	    'limit' => 10
	));


	$this->render('index', array(
	    'categories' => $categories,
	    'featureAds' => $featureAds
	));
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError() {
	if ($error = Yii::app()->errorHandler->error) {
	    if (Yii::app()->request->isAjaxRequest)
		echo $error['message'];
	    else
		$this->render('error', $error);
	}
    }

    /**
     * Displays the contact page
     * @author Tuong Tran <tuong.tran@outlook.com>
     * @return void
     */
    public function actionContact() {
	$model = new ContactForm;
	if (isset($_POST['ContactForm'])) {
	    $model->attributes = $_POST['ContactForm'];
	    if ($model->validate()) {
		//
		//save model
		$contactUs = new ContactUs;
		$contactUs->attributes = $model->attributes;

		if ($contactUs->save()) {
		    //send the email to admin
		    EmailHelper::sendContactRequest($model);

		    Yii::app()->user->setFlash('contact', 'Thank you for contacting us. We will respond to you as soon as possible.');
		}

		$this->refresh();
	    }
	}
	$this->render('contact', array('model' => $model));
    }

    /**
     * render custom layout
     * @param type $alias
     */
    public function actionPage($alias) {

	//get model with post type
	Yii::import('common.models.page.*');
	$model = Page::model()->find('alias=:alias', array(':alias' => $alias));

	if (!$model) {
	    throw new CHttpException(404, 'Page was not exists');
	}
	$this->keywords = $model->keywords;
	$this->description = $model->description;
	$this->render('page', array(
	    'model' => $model
	));
    }

    /**
     * Displays the login page
     */
    public function actionLogin() {
	$model = new LoginForm;

	// if it is ajax validation request
	if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
	    echo CActiveForm::validate($model);
	    Yii::app()->end();
	}

	// collect user input data
	if (isset($_POST['LoginForm'])) {
	    $model->attributes = $_POST['LoginForm'];
	    // validate user input and redirect to the previous page if valid
	    if ($model->validate() && $model->login()) {
		$this->redirect(Yii::app()->user->returnUrl);
	    }
	}
	// display the login form
	$this->render('login', array('model' => $model));
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout() {
	Yii::app()->user->logout();
	$this->redirect(Yii::app()->homeUrl);
    }

    /**
     * This is the action to Clear Cache
     * From backend when administrator wants to clear all site cache using ccache class.
     * He must call this acction to flush front end cache
     */
    public function actionCaching() {
	if (isset($_POST['key'])) {
	    if ($_POST['key'] == FRONTEND_CLEAR_CACHE_KEY) {
		app()->cache->flush();
		echo '1';
	    } else {
		app()->cache->delete($_POST['key']);
	    }
	} else {
	    if (isset($_POST['setting']) && isset($_POST['category'])) {
		settings()->deleteCache($_POST['category']);
	    }
	}
    }

}

